﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class UserControl_ControlNhapChiPhiHangNgay : System.Web.UI.UserControl
{
    ClassExecute.ClassExecute dt;
    string str = webapp4U.Configuration.CurrentConnectionString;
    string error = "";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (ViewState["flag"] == null)
            {
                //ViewState["flag"] = false;
                ClearAdd();
            }
            LoadExpenseType();
            LoadExpenseCode();
        }
    }
    void LoadExpenseCode()
    {
        dt = new ClassExecute.ClassExecute();
        try
        {

            DataTable db = dt.Get_Data_DataTable(str, ref error, "k_getExpenseCode", CommandType.StoredProcedure,
                new SqlParameter("@ExpTypeID",int.Parse(DropTypeChiPhi.SelectedValue.ToString())));
            dt.BindDropDownList(db, DropChiPhi, "ExpID", "ExpDesc");
        }
        catch 
        {

            return;
        }
    }

    void ClearAdd()
    {
        TabContainer1.ActiveTabIndex = 0;
        txtSoHoaDon.Text = "New";
        txtNgayHoaDon.Text = Session["workingday"].ToString();
        txtTongTien.Text = "";
        txtGhiChu.Text = "";
        ViewState["flag"] = true;
        TabContainer1.ActiveTabIndex = 0;

        btnSave.Text = "Lưu";
        lblMsg.Text = "";
        lblMsg.Visible = false;
        btnDelete.Visible = false;
    }
    protected void imgBtnAdd_Click(object sender, ImageClickEventArgs e)
    {
        ClearAdd();
    }
    void LoadExpenseType()
    {
        dt = new ClassExecute.ClassExecute();
        try
        {
            
            DataTable db = dt.Get_Data_DataTable(str, ref error, "k_getExpenseType", CommandType.StoredProcedure,
                new SqlParameter("@sitecode", Session["sitecode"].ToString()));
            dt.BindDropDownList(db, DropTypeChiPhi, "ExpTypeID", "ExpTypeDesc");
        }
        catch (Exception ex)
        {

            string method = System.Reflection.MethodBase.GetCurrentMethod().Name;
            dt.WriteErrorLog(Server.MapPath(webapp4U.Globals.LogUrl()), ex.Message, method);
        }
    }
    public int CompareDate(string sdate1, string sdate2)
    {
        DateTime date1 = new DateTime(int.Parse(sdate1.Substring(6, 4)), int.Parse(sdate1.Substring(3, 2)), int.Parse(sdate1.Substring(0, 2)));
        DateTime date2 = new DateTime(int.Parse(sdate2.Substring(6, 4)), int.Parse(sdate2.Substring(3, 2)), int.Parse(sdate2.Substring(0, 2)));
        int result = DateTime.Compare(date1, date2);
        return result;

        //if (result < 0)
        //    relationship = "sdate1 is earlier than";
        //else if (result == 0)
        //    relationship = "is the same time as";
        //else
        //    relationship = "sdate 1 is later than";

    }
   
   
    protected void btSearch_Click(object sender, EventArgs e)
    {
        
        LoadGrid();
    }
    protected void grvMonthLyExpense_PageIndexChanging1(object sender, GridViewPageEventArgs e)
    {

        grvMonthLyExpense.PageIndex = e.NewPageIndex;
        LoadGrid();
    }
     protected void grvMonthLyExpense_RowCommand1(object sender, GridViewCommandEventArgs e)
     {
         dt = new ClassExecute.ClassExecute();
         try
         {
             if (e.CommandName == "chon")
             {
                 GridViewRow grv = ((Control)e.CommandSource).NamingContainer as GridViewRow;
                 Label lblMaSo = (Label)grv.FindControl("lblMaSo");
                 
                 DataTable db = dt.Get_Data_DataTable(str, ref error, "[k_getDetailMonthLyExpense]", CommandType.StoredProcedure,
                     new SqlParameter("@ID", int.Parse(lblMaSo.Text)));

                 txtSoHoaDon.Text = db.Rows[0]["ID"].ToString();
                 
                 txtNgayHoaDon.Text = db.Rows[0]["ExpYyyyMmDd"].ToString();

                 try
                 {
                     DropTypeChiPhi.SelectedValue = db.Rows[0]["ExpType"].ToString();
                     LoadExpenseCode();
                 }
                 catch
                 {
                 }
                 try
                 {
                     DropChiPhi.SelectedValue = db.Rows[0]["ExpCode"].ToString();
                 }
                 catch
                 {
                 }
                 txtTongTien.Text = db.Rows[0]["ExpVal"].ToString();
                 txtGhiChu.Text = db.Rows[0]["CashRevNote"].ToString();

                 //Edit
                 btnSave.Text = "Cập nhật";
                 lblMsg.Text = "";
                 lblMsg.Visible = false;
                 btnDelete.Visible = true;
                 //End Edit

                 grvMonthLyExpense.DataSource = null;
                 grvMonthLyExpense.DataBind();

                 ViewState["flag"] = false;
                 TabContainer1.ActiveTabIndex = 0;
                
             }
         }
         catch (Exception ex)
         {

             string method = System.Reflection.MethodBase.GetCurrentMethod().Name;
             dt.WriteErrorLog(Server.MapPath(webapp4U.Globals.LogUrl()), ex.Message, method);
         }
     }
    void LoadGrid()
    {
        dt = new ClassExecute.ClassExecute();
        try
        {
            DataTable db = dt.Get_Data_DataTable(str, ref error, "[k_findMonthLyExpense]", CommandType.StoredProcedure,
                new SqlParameter("@para", txtSearch.Text),
                 new SqlParameter("@sitecode", Session["sitecode"].ToString()));


            if (db.Rows.Count == 0)
            {
                ShowMessageBox("Không tìm thấy kết quả");
                grvMonthLyExpense.DataSource = null;
            }
            else
            {
                grvMonthLyExpense.DataSource = db;
            }
            grvMonthLyExpense.DataBind();
        }
        catch (Exception ex)
        {

            string method = System.Reflection.MethodBase.GetCurrentMethod().Name;
            dt.WriteErrorLog(Server.MapPath(webapp4U.Globals.LogUrl()), ex.Message, method);
        }
    }
    void ShowMessageBox(string text)
    {
        MessageBox.Text = text;
        MessageBox.ShowOnPageLoad = true;
    }
    protected void DropTypeChiPhi_SelectedIndexChanged(object sender, EventArgs e)
    {
        LoadExpenseCode();
    }

    protected void btnDelete_Click(object sender, EventArgs e)
    {
        dt = new ClassExecute.ClassExecute();
        try
        {
            bool kq = dt.ExecuteSQl_bool(str, CommandType.StoredProcedure, "TTr_MonthlyExpense_Delete", ref error,
                 new SqlParameter("@ID", int.Parse(txtSoHoaDon.Text)));
            if (kq)
            {
                ClearAdd();
                lblMsg.Text = "Xóa nghiệp vụ nhập chi phí thành công";
                lblMsg.Visible = true;
            }
            
        }
        catch (Exception ex)
        {
            //ShowMessageBox("Hệ thống đang bảo trì");
            lblMsg.Text = "Hệ thống đang bảo trì";
            lblMsg.Visible = true;

            string method = System.Reflection.MethodBase.GetCurrentMethod().Name;
            dt.WriteErrorLog(Server.MapPath(webapp4U.Globals.LogUrl()), ex.Message, method);
        }
    }

    protected void btnSave_Click(object sender, EventArgs e)
    {
        int checkkhoaso = CompareDate(txtNgayHoaDon.Text, Session["workingday"].ToString());
        if (checkkhoaso < 0)
        {
            //ShowMessageBox("Ngày bạn chọn nhỏ hơn ngày đã khóa sổ trong hệ thống,ngày khóa sổ của bạn là " + Session["workingday"].ToString());
            
            lblMsg.Text = "Ngày bạn chọn nhỏ hơn ngày đã khóa sổ trong hệ thống,ngày khóa sổ của bạn là " + Session["workingday"].ToString();
            lblMsg.Visible = true;

            txtNgayHoaDon.Focus();
        }
        else
        {
            dt = new ClassExecute.ClassExecute();
            int i = 0;
            try
            {
                if ((bool)ViewState["flag"])
                {
                    //insert
                    i = dt.ExecuteSQl_int(str, "k_insertMonthLyExpense", CommandType.StoredProcedure, ref error,
                        new SqlParameter("@ExpYyyyMmDd", txtNgayHoaDon.Text),
                        new SqlParameter("@ExpCode", int.Parse(DropChiPhi.SelectedValue.ToString())),
                        new SqlParameter("@ExpVal", float.Parse(txtTongTien.Text)),
                        new SqlParameter("@ExpType", int.Parse(DropTypeChiPhi.SelectedValue.ToString())),
                         new SqlParameter("@sitecode", Session["sitecode"].ToString()),
                         new SqlParameter("@CashRevNote", txtGhiChu.Text));
                    if (i == 1)
                    {
                        //ShowMessageBox("Thêm mới hóa đơn chi phí thành công");
                        ClearAdd();
                        lblMsg.Text = "Thêm mới hóa đơn chi phí thành công";
                        lblMsg.Visible = true;
                    }
                    else
                    {
                        //ShowMessageBox("Hệ thống đang bảo trì");
                        lblMsg.Text = "Hệ thống đang bảo trì";
                        lblMsg.Visible = true;
                    }

                    //ViewState["flag"] = false;

                    //txtSoHoaDon.Text = "";
                    //txtTongTien.Text = "";
                    //txtGhiChu.Text = "";
                }
                else
                {
                    //update
                    i = dt.ExecuteSQl_int(str, "[k_updateMonthLyExpense]", CommandType.StoredProcedure, ref error,
                        new SqlParameter("@ExpYyyyMmDd", txtNgayHoaDon.Text),
                        new SqlParameter("@ExpCode", DropChiPhi.SelectedValue.ToString()),
                         new SqlParameter("@ExpType", DropTypeChiPhi.SelectedValue.ToString()),
                        new SqlParameter("@ExpVal", float.Parse(txtTongTien.Text)),
                         new SqlParameter("@CashRevNote", txtGhiChu.Text),
                         new SqlParameter("@ID", int.Parse(txtSoHoaDon.Text)));
                    if (i == 1)
                    {
                        //ShowMessageBox("Cập nhật hóa đơn chi phí thành công");
                        lblMsg.Text = "Cập nhật hóa đơn chi phí thành công";
                        lblMsg.Visible = true;
                    }
                    else
                    {
                        //ShowMessageBox("Đề nghị cung cấp mã hóa đơn chi phí để cập nhật");
                        lblMsg.Text = "Đề nghị cung cấp mã hóa đơn chi phí để cập nhật";
                        lblMsg.Visible = true;
                    }
                }
            }
            catch (Exception ex)
            {

                string method = System.Reflection.MethodBase.GetCurrentMethod().Name;
                dt.WriteErrorLog(Server.MapPath(webapp4U.Globals.LogUrl()), ex.Message, method);
            }
        }
    }
}